﻿window.top.ngW8.module.service("$msg", [function () {
    return {
        $instance: function () {
            if (!window.top.$msgInstance) {
                window.top.$msgInstance = {};
            }
            return window.top.$msgInstance;
        },
        $show: function (msg, OK, Cancel) {
            if (!window.top.$msgInstance) {
                window.top.$msgInstance = this;
            }
            var me = window.top.$msgInstance;
            if (me.$instance().hasShown) {
                return;
            }
            var msgDiv = $("#sys_msg");
            if (msgDiv.length == 0) {
                ngW8.$("$loader").$load(window.top.ngW8.$rootScope, "controls/MessageBox.html", function (msgScope, ele) {
                    ele.attr("id", "sys_msg");
                    ele.appendTo($("body")[0]);
                    ele.find("#msg").html(msg);
                    ele.css("top", ($(window).height() - ele.height()) / 2);

                    ele.find("#OK").click(function () {
                        if (OK) {
                            if (OK(ele)) {
                                ele.hide();
                            }
                            me.$instance().hasShown = false;
                        }
                        else {
                            ele.hide();
                            me.$instance().hasShown = false;
                        }
                    });
                    if (Cancel) {
                        ele.find("#cancel").click(function () {
                            Cancel(ele);
                        }).show();
                    }
                    ele.show();
                });
            }
            else {
                msgDiv.show();
                msgDiv.find("#OK").click(function () {
                    if (OK) {
                        OK(msgDiv);
                        msgDiv.hide();
                        me.$instance().hasShown = false;
                    }
                    else {
                        msgDiv.hide();
                        me.$instance().hasShown = false;
                    }
                });
                msgDiv.find("#msg").html(msg);
                if (Cancel) {
                    msgDiv.find("#cancel").click(function () {
                        Cancel(msgDiv);
                    }).show();
                }
            }
            me.$instance().hasShown = true;
        },
        $hide: function () {
            this.$instance().hasShown = false;

        }
    }
}]);
